iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
AI & Data

30 天入門常見的機器學習演算法系列 第 24

(Day 24) Adam 優化器 (Adaptive Moment Estimation)

  • 分享至 

  • xImage
  •  

在前一天,我們整理了深度學習中常見的優化方法,從最基本的隨機梯度下降 (SGD),到 Momentum、RMSProp、Adagrad 等。今天我們要深入介紹其中最具代表性、也是實務中最常見的優化方法之一——Adam (Adaptive Moment Estimation)。

Adam 幾乎是深度學習的「預設優化器」。不論是電腦視覺、自然語言處理,還是時間序列預測,只要使用主流深度學習框架 (PyTorch、TensorFlow、Keras),Adam 幾乎總是第一個被嘗試的選擇。

Adam 的動機

為什麼會有 Adam? 它的出發點是想同時結合 Momentum 與 RMSProp 的優點:

  • Momentum: 透過累積一階動量 (過去梯度的加權平均),能加速收斂並減少震盪。
  • RMSProp: 透過維護二階動量 (梯度平方的移動平均),能自動調整不同維度的學習率。

Adam 的設計思想是: 既要考慮梯度的方向 (Momentum),又要考慮不同維度的學習率 (RMSProp),並在數值上進行偏差修正,確保更新穩定。

數學公式

Adam 的更新規則如下:

初始化

  • 參數 $\theta_0$
  • 一階動量 $m_0 = 0$
  • 二階動量 $v_0 = 0$

更新規則

在第 $t$ 次迭代時:

  • 計算梯度:

$$
g_t = \nabla_\theta L(\theta_t)
$$

  • 一階動量 (類似 Momentum):

$$
m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t
$$

  • 二階動量 (類似 RMSProp):

$$
v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2
$$

  • 偏差修正 (Bias Correction):

$$
\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t}
$$

  • 更新參數:

$$
\theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
$$

其中:

  • $\beta_1$: 一階動量衰減率 (常用 0.9)
  • $\beta_2$: 二階動量衰減率 (常用 0.999)
  • $\eta$: 學習率 (預設 0.001)
  • $\epsilon$: 小常數 (避免除以零,預設 $10^{-8}$)

直觀理解

  • Momentum 部分: 像小球在山谷中滾動,透過累積速度 (梯度平均) 加速下降,避免在峽谷來回震盪。
  • RMSProp 部分: 針對每個維度自適應調整學習率,梯度大的方向學習率小,梯度小的方向學習率大,避免震盪。
  • 偏差修正: 在訓練初期,$m_t$ 與 $v_t$ 會偏向 0,修正後的 $\hat{m}_t, \hat{v}_t$ 能更準確反映真實期望。

總結: Adam = Momentum + RMSProp + Bias Correction。

Adam 的優點

  • 自適應學習率: 不同參數有不同的更新幅度,對非平穩目標 (如 NLP、RNN) 表現很好。
  • 幾乎免調參: 在多數任務中,使用預設參數 $(\eta=0.001, \beta_1=0.9, \beta_2=0.999)$ 就能得到不錯結果。
  • 收斂速度快: 相較於 SGD,Adam 在初期收斂通常更快。
  • 廣泛適用性: 影像、語音、文本任務都能使用。

Adam 的缺點

  • 泛化能力不如 SGD
    • 雖然 Adam 收斂快,但在部分電腦視覺任務上,最終測試集準確率可能不如 SGD + Momentum。
    • 原因是 Adam 的自適應特性可能讓模型停留在「次優解」。
  • 需要較多記憶體
    • 需要同時儲存 $m_t$ 與 $v_t$,記憶體消耗比 SGD 大。
  • 對 $\beta_1, \beta_2$ 的敏感性
    • 若調整不當,可能導致收斂不穩定。

實務建議

  • 初學者: 直接用 Adam,省時省力,快速得到不錯結果。
  • 大規模電腦視覺任務: 若追求最佳測試精度,建議用 SGD + Momentum,Adam 作為前期加速工具。
  • NLP 與 Transformer: AdamW 幾乎是標配。
  • 小模型/資源有限: Adam 收斂快、免調參,適合小規模實驗。

結語

Adam 是深度學習時代最具代表性的優化器之一,它結合了 Momentum 與 RMSProp 的優點,在多數應用中表現穩定且高效。雖然它並非在所有情況下都是最佳選擇,但作為「預設起點」仍然無可取代。

如果說 SGD 是經典、穩健的老將,那麼 Adam 就是靈活、快速的新秀。在實務中,選擇 Adam 或 SGD 並不是二選一,而是取決於你的任務需求: 需要快速實驗? 選 Adam;需要極致表現? 選 SGD + Momentum。

未來,我們會看到更多 Adam 的改進版本持續誕生,但核心精神仍是一樣: 如何在複雜的高維優化地形裡,既快又穩地找到一個好解。


上一篇
(Day 23) 深度學習中的優化方法 (Optimization in Deep Learning)
下一篇
(Day 25) 循環神經網路 (Recurrent Neural Network)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言